package com.kx.my03;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Value：简单类型的属性赋值 属性：value是String类型的，表示简单类型的属性值
 * 位置：1、在属性定义的上面，无需set方法，推荐使用。
 * 2、在set方法的上面
 */
@Component(value = "myStudent")
public class Student {
    @Value("lisi")
    private String name;
    @Value("1001")
    private Integer id;

    /**
     * 引用类型
     *
     * @Autowired：spring框架提供的注解，实现引用类型的赋值。
     *             spring中通过注解给引用类型赋值，使用的是自动注入原理，支持byName，byType
     * @Autowired：默认byType自动注入
     * 位置：1、在属性定义的上面，无需set方法，推荐使用。
     *      2、在set方法的上面
     */
    @Autowired
    private School school;

    public Student() {
        System.out.println("Student03无参构造");
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", id=" + id +
                ", school=" + school +
                '}';
    }
}
